#ifndef LANE_H
#define LANE_H

#include <QVector>
#include <string>

struct LaneWidth
{
    double a = 0;
    double b = 0;
    double c = 0;
    double d = 0;
};

struct Lane
{
    int iId = 0;
    LaneWidth structWidth;
    const char *pLaneType = "none";
    const char *pRoadMarkType = "none";
    const char *pRoadMarkColor = "standard";
};

struct LaneSection
{
    double s = 0;
    QVector<Lane> vecLaneInformation;
};

typedef LaneWidth Extend;

struct Geometry
{
    double hdg = 0;
    double length = 0;
    double s = 0;
    double x = 0;
    double y = 0;
    std::string pGeometryType;
    Extend extend;
};

typedef LaneWidth Coefficients;

struct Elevation
{
    double s = 0;
    Coefficients coefficients;
};

typedef LaneWidth LaneOffset;

struct Road
{
    long long id = 0;
    long long junction = 0;
    double length = 0;
    QVector<Geometry> vecGeometry;
    QVector<Elevation> vecElevation;
    QVector<LaneSection> vecLaneSection;
    QVector<LaneOffset> vecLaneOffset;
};

#endif // LANE_H
